The present application may refer to the following documents: “Virtual Interface Architecture Specification,” Version 1.0, Dec. 16, 1997 from Compaq, Intel and Microsoft (hereinafter “VIAR”); “Intel Virtual Interface (VI) Architecture Developer's Guide,” September, 1998 from Intel (hereinafter “VIDG”); “VIDF Virtual Interface (VI) Architecture Developer's Guide,” Revision 1.1 Draft, Sep. 26, 2000 from Intel; and a “VI/TCP (Internet VI)” memo published by Jim Williams, a named inventor of the present application, and S. DiCecco, for the Network Working Group of the Internet Engineering Task Force (IETF), on Jul. 14, 2000 (hereinafter “IETF Memo”).
Transmission Control Protocol (TCP)/Internet Protocol (IP) is a set of networking protocols that provide communication across interconnected networks, between computers with diverse hardware architectures and various operating systems. The TCP/IP protocols track Internet addresses of nodes, routes outgoing messages and recognizes incoming messages. TCP is a connection-oriented, end-to-end transport layer protocol used to transfer data in a network. IP addresses packets and is the messenger protocol of the TCP/IP protocols.
A conventional network interface card (NIC) receives TCP/IP packets from a network and stores the packets in a NIC memory. The conventional host system copies packets from the NIC memory to a host memory and handles transport protocol processing of the TCP/IP packets. A kernel of a conventional host operating system (OS) may execute a TCP/IP stack. The host OS typically provides a set of commands that may configure the host TCP/IP stack and a network interface.
The host software may use TCP and IP headers to determine a “connection” associated with each packet. An IP header may include a source IP address and a destination IP address. A TCP header may include a source port ID/number, a destination port ID/number, a checksum, a packet sequence number and other control information. If the TCP/IP packets are received from the network out of order, the host software may use TCP packet sequence numbers in TCP headers to put the TCP/IP packets in a proper order. The host software may also reassemble data (messages) that the NIC receives in pieces.
Popular legacy communication libraries and technologies, such as sockets on TCP/IP Ethernet, rely on the host processor to process communication protocols. As networks become faster, computer systems spend more time running communication protocols, which leaves less time for application processing. As the host processor becomes over-taxed by the communications protocol overhead, the network is underutilized. While processors and networks become faster, the overhead of protocol processing leaves the processor with little time to execute applications, and the network potential remains unrealized.